package JoReg

type Dfa struct {
	// 状态值
	stateIndex int
	// 接受状态 true:可接受
	acceptFlag bool
	// nfa的空边集合
	nfaSet map[*Nfa]struct{}
}

func MakeDfa(dfaManagerPtr *DfaManager, nfaSet map[*Nfa]struct{}) *Dfa {
	dfaPtr := &Dfa{
		stateIndex: dfaManagerPtr.stateIndex,
		acceptFlag: false,
		nfaSet:     nfaSet,
	}
	for nfaPtr, _ := range nfaSet {
		if nfaPtr.upPtr == nil && nfaPtr.nextPtr == nil {
			dfaPtr.acceptFlag = true
			break
		}
	}
	dfaManagerPtr.stateIndex++
	return dfaPtr
}
